﻿using System;
using System.Configuration;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using TheBullysStore.Controllers;
using System.Data.SqlClient;
using log4net;

namespace TheBullysStore.Models.ModuloAdministracion.ConsumoAgua
{
    public class ConsumoAguaDAO
    {
        private static ILog log = LogManager.GetLogger(typeof(ConsumoAguaDAO));
        string cadenaFechaInicial;
        string cadenaFechaFinal;
        public List<Area_Comun> buscarAreaComun(string id_edificio)
        {
            List<Area_Comun> listaPisos = new List<Area_Comun>();
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            sqlCon.Open();
            try
            {
                string commandString = "SELECT nombre_area, id_area_comun FROM area_comun where id_edificio = " + id_edificio;
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();
                while (dataReader.Read())
                {
                    Area_Comun area_comun = new Area_Comun(); 
                    area_comun.nombre = Convert.ToString(dataReader["nombre_area"]);
                    area_comun.id_area_comun = Convert.ToInt32(dataReader["id_area_comun"]);
                    listaPisos.Add(area_comun);
                }
                dataReader.Close();
                sqlCon.Close();
                return listaPisos;
            }
            catch (Exception ex)
            {
                log.Error("buscarAreaComun(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }
        public string verificarModificacionAreaComun(ConsumoAguaBean consumoAgua)
        {
            string mensaje = "";
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            sqlCon.Open();
            try
            {
                //solo cambiar el nombre de la tabla y el id_consumo a id_consumo_agua_area_comun
                //tambien el id_departamento, que sera id_area_comun
                string commandString = "SELECT a.Id_Consumo FROM Consumo_De_Agua a, Consumo_De_Agua b where a.Id_Consumo = b.Id_Consumo";
                commandString += " AND a.Fecha_final > b.Fecha_final AND a.costo is null";
                commandString += " AND a.id_departamento = " + consumoAgua.id_departamento;
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();
                if (dataReader.Read())
                {
                    int Id_Consumo = Convert.ToInt32(dataReader["Id_Consumo"]);
                    if (Id_Consumo == consumoAgua.Id_Consumo)
                    {
                        mensaje = "si";
                    }
                    else
                    {
                        mensaje = "No se puede modificar este consumo de agua";
                    }
                }
                else
                {
                    mensaje = "no hay registro de ultima fecha en la base de datos";
                }

                sqlCon.Close();
            }
            catch (Exception ex)
            {
                log.Error("verificarModificacion(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
            return mensaje;
        }
        public Conjunto cargarUltimaFechaRegistradaAreaComun(string id_area_comun)
        {
            Conjunto conjunto = new Conjunto();
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            sqlCon.Open();
            try
            {
                //cambiar nombre de la tabla, el id_departamento por id_area_comun
                int x;
                string commandString = "select count(*) from Consumo_Agua_Area_Comun where id_area_comun ='" + id_area_comun + "' ";
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                if (!Convert.IsDBNull(sqlCmd.ExecuteScalar()))
                {
                    x = (int)sqlCmd.ExecuteScalar();
                }
                else
                {

                    x = 0;
                }



                if (x != 0)
                {
                    commandString = "SELECT * FROM Consumo_Agua_Area_Comun where id_area_comun ='" + id_area_comun + "' order by anio,mes desc";
                    sqlCmd = new SqlCommand(commandString, sqlCon);
                    SqlDataReader dataReader = sqlCmd.ExecuteReader();
                    dataReader.Read();
                    conjunto.anio = Convert.ToString(dataReader["anio"]);
                    conjunto.mes = Convert.ToString(dataReader["mes"]);
                    conjunto.monto = Convert.ToString(dataReader["registro_final"]);
                    conjunto.existe = true;
                    dataReader.Close();
                }
                else
                {
                    conjunto.existe = false;
                }
                sqlCon.Close();
                return conjunto;
            }
            catch (Exception ex)
            {
                log.Error("cargarUltimaFechaRegistrada(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }
        public string mantenerConsumoAguaAreaComun(ConsumoAguaBean consumoAgua)
        {
            //******************************************************************
            //******************************************************************

            string mensaje = "";
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
            string commandString = "";
            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            SqlCommand sqlCmd;
            sqlCon.Open();

            try
            {

                if (consumoAgua.accion == 1)
                {
                    //inserto consumo de agua
                    commandString = "INSERT INTO Consumo_Agua_Area_Comun (registro_inicio,Estado,id_area_comun,registro_final,id_edificio,anio,mes)values('" + consumoAgua.registro_inicio + "',1,'" + consumoAgua.id_area_comun + "','" + consumoAgua.registro_final + "','" + consumoAgua.id_edificio + "','" + consumoAgua.anio + "','" + consumoAgua.mes + "')";
                    sqlCmd = new SqlCommand(commandString, sqlCon);
                    sqlCmd.ExecuteNonQuery();
                    mensaje = "Se inserto el Consumo de Agua correctamente";
                }
                if (consumoAgua.accion == 2)
                {
                    int x;
                    commandString = "select count(*) from Consumo_Agua_Area_Comun where id_consumo_agua_area_comun ='" + consumoAgua.Id_Consumo + "'";
                    sqlCmd = new SqlCommand(commandString, sqlCon);
                    if (!Convert.IsDBNull(sqlCmd.ExecuteScalar()))
                    {
                        x = (int)sqlCmd.ExecuteScalar();
                    }
                    else
                    {

                        x = 0;
                    }
                    if (x != 0)
                    {
                        commandString = "update Consumo_Agua_Area_Comun set registro_final='" + consumoAgua.registro_final + "' where Id_Consumo_agua_area_comun='" + consumoAgua.Id_Consumo + "'";
                        sqlCmd = new SqlCommand(commandString, sqlCon);
                        sqlCmd.ExecuteNonQuery();
                        mensaje = "Se modifico el Consumo de Agua correctamente";
                    }
                    else mensaje = "No esta permitido modificar este Consumo de Agua";

                }
                if (consumoAgua.accion == 3)
                {
                    int x;
                    commandString = "select count(*) from Consumo_Agua_Area_Comun where Id_Consumo_agua_area_comun ='" + consumoAgua.Id_Consumo + "'";
                    sqlCmd = new SqlCommand(commandString, sqlCon);
                    if (!Convert.IsDBNull(sqlCmd.ExecuteScalar()))
                    {
                        x = (int)sqlCmd.ExecuteScalar();
                    }
                    else
                    {

                        x = 0;
                    }
                    if (x != 0)
                    {
                        commandString = "update Consumo_Agua_Area_Comun set estado='" + 0 + "' where Id_Consumo_agua_area_comun='" + consumoAgua.Id_Consumo + "'";
                        sqlCmd = new SqlCommand(commandString, sqlCon);
                        sqlCmd.ExecuteNonQuery();
                        mensaje = "Se Elimino el Consumo de Agua correctamente";
                    }
                    else mensaje = "No esta permitido Eliminar este Consumo de Agua";

                }
                sqlCon.Close();
            }

            catch (Exception ex)
            {
                log.Error("mantenerConsumoAgua(EXCEPTION): ", ex);
                throw ex;
                if (consumoAgua.accion == 0)
                {
                    mensaje = "No se pudo eliminar el Consumo de Agua correctamente";

                }
                if (consumoAgua.accion == 1)
                {
                    mensaje = "No se pudo insertar el Consumo de Agua correctamente";
                }
                if (consumoAgua.accion == 2)
                {
                    mensaje = "No se pudo modificar el Consumo de Agua correctamente";
                }
                sqlCon.Close();
                return mensaje;
            }
            finally
            {
                sqlCon.Close();
            }
            return mensaje;
        }
        public List<ConsumoAguaBean> listarConsumoAguaAreaComun(BusquedaConsumoAgua busquedaConsumoAgua)
        {
            List<ConsumoAguaBean> listaConsumoAgua = new List<ConsumoAguaBean>();
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            sqlCon.Open();
            try
            {

                string commandString = "SELECT a.Id_Consumo_agua_area_comun, a.registro_inicio, a.estado, a.id_area_comun, a.registro_final, a.id_edificio, a.anio, a.mes, b.Nombre, c.nombre_area FROM consumo_agua_area_comun a, edificio b, area_comun c Where a.id_edificio = b.id_edificio AND a.id_area_comun = c.id_area_comun AND a.estado = 1 AND b.Contometro = 1";
                commandString += " AND a.id_edificio like '%" + busquedaConsumoAgua.id_edificio + "%'";
                commandString += " AND a.id_area_comun like '%" + busquedaConsumoAgua.id_area_comun + "%'";
                bool banioI = true, bmesI = true, banioF = true, bmesF = true;
                if (busquedaConsumoAgua.anioInicial == 0) banioI = false;
                if (busquedaConsumoAgua.mesInicial == 0) bmesI = false;
                if (busquedaConsumoAgua.anioFinal == 0) banioF = false;
                if (busquedaConsumoAgua.mesFinal == 0) bmesF = false;
                if (banioI && bmesI) cadenaFechaInicial = "" + busquedaConsumoAgua.anioInicial + busquedaConsumoAgua.mesInicial;
                if (!banioI && bmesI) cadenaFechaInicial = "000000";
                if (banioI && !bmesI) cadenaFechaInicial = "" + busquedaConsumoAgua.anioInicial + "00";
                if (!banioI && !bmesI) cadenaFechaInicial = "000000";
                if (banioF && bmesF) cadenaFechaFinal = "" + busquedaConsumoAgua.anioFinal + busquedaConsumoAgua.mesFinal;
                if (!banioF && bmesF) cadenaFechaFinal = "999999";
                if (banioF && !bmesF) cadenaFechaFinal = "" + busquedaConsumoAgua.anioFinal + "99";
                if (!banioF && !bmesF) cadenaFechaFinal = "999999";
                commandString += " order by anio,mes desc";
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();
                while (dataReader.Read())
                {
                    ConsumoAguaBean consumoAgua = new ConsumoAguaBean();
                    consumoAgua.Id_Consumo = Convert.ToInt32(dataReader["Id_Consumo_agua_area_comun"]);
                    consumoAgua.id_edificio = Convert.ToInt32(dataReader["id_edificio"]);
                    consumoAgua.id_departamento = Convert.ToInt32(dataReader["id_area_comun"]);
                    consumoAgua.registro_inicio = Convert.ToInt32(dataReader["registro_inicio"]);
                    consumoAgua.registro_final = Convert.ToInt32(dataReader["registro_final"]);
                    consumoAgua.anio = Convert.ToInt32(dataReader["anio"]);
                    consumoAgua.mes = Convert.ToInt32(dataReader["mes"]);
                    consumoAgua.edificio = Convert.ToString(dataReader["Nombre"]);
                    consumoAgua.departamento = Convert.ToString(dataReader["nombre_area"]);
                    string cadenaFecha = "" + consumoAgua.anio + consumoAgua.mes;
                    if ((Convert.ToInt32(cadenaFecha) >= Convert.ToInt32(cadenaFechaInicial)) && (Convert.ToInt32(cadenaFecha) <= Convert.ToInt32(cadenaFechaFinal)))
                    {
                        listaConsumoAgua.Add(consumoAgua);
                    }
                }

                dataReader.Close();
                sqlCon.Close();
                return listaConsumoAgua;
            }
            catch (Exception ex)
            {
                log.Error("listarConsumoAgua(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }
        public string mantenerConsumoAgua(ConsumoAguaBean consumoAgua)
        {
            //******************************************************************
            //******************************************************************

            string mensaje = "";
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
            string commandString = "";
            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            SqlCommand sqlCmd;
            sqlCon.Open();

            try
            {

                if (consumoAgua.accion == 1)
                {
                    int x;
                    commandString = "select id_cuenta from cuenta_por_cobrar where id_departamento ='" + consumoAgua.id_departamento + "' and anio ='" + consumoAgua.anio + "' and mes ='" + consumoAgua.mes;
                    sqlCmd = new SqlCommand(commandString, sqlCon);
                    if (!Convert.IsDBNull(sqlCmd.ExecuteScalar()))
                    {
                        x = (int)sqlCmd.ExecuteScalar();
                    }
                    else
                    {
                        x = 0;
                    }
                    //inserto consumo de agua
                    commandString = "INSERT INTO Consumo_De_Agua (registro_inicio,Estado,id_departamento,registro_final,id_edificio,anio,mes,id_cuenta)values('" + consumoAgua.registro_inicio + "',1,'" + consumoAgua.id_departamento + "','" + consumoAgua.registro_final + "','" + consumoAgua.id_edificio + "','" + consumoAgua.anio + "','" + consumoAgua.mes + "','" + x + "')";
                    sqlCmd = new SqlCommand(commandString, sqlCon);
                    sqlCmd.ExecuteNonQuery();
                    mensaje = "Se inserto el Consumo de Agua correctamente";
                }
                if (consumoAgua.accion == 2)
                {
                    int x;
                    commandString = "select count(*) from Consumo_De_Agua where id_consumo ='" + consumoAgua.Id_Consumo + "' and costo is null";
                    sqlCmd = new SqlCommand(commandString, sqlCon);
                    if (!Convert.IsDBNull(sqlCmd.ExecuteScalar()))
                    {
                        x = (int)sqlCmd.ExecuteScalar();
                    }
                    else
                    {

                        x = 0;
                    }
                    if (x != 0)
                    {
                        commandString = "update Consumo_De_Agua set registro_final='" + consumoAgua.registro_final + "' where Id_Consumo='" + consumoAgua.Id_Consumo + "'";
                        sqlCmd = new SqlCommand(commandString, sqlCon);
                        sqlCmd.ExecuteNonQuery();
                        mensaje = "Se modifico el Consumo de Agua correctamente";
                    }
                    else mensaje = "No esta permitido modificar este Consumo de Agua";
                    
                }
                if (consumoAgua.accion == 3)
                {
                    int x;
                    commandString = "select count(*) from Consumo_De_Agua where id_consumo ='" + consumoAgua.Id_Consumo + "' and costo is null";
                    sqlCmd = new SqlCommand(commandString, sqlCon);
                    if (!Convert.IsDBNull(sqlCmd.ExecuteScalar()))
                    {
                        x = (int)sqlCmd.ExecuteScalar();
                    }
                    else
                    {

                        x = 0;
                    }
                    if (x != 0)
                    {
                        commandString = "update Consumo_De_Agua set estado='" + 0 + "' where Id_Consumo='" + consumoAgua.Id_Consumo + "'";
                        sqlCmd = new SqlCommand(commandString, sqlCon);
                        sqlCmd.ExecuteNonQuery();
                        mensaje = "Se Elimino el Consumo de Agua correctamente";
                    }
                    else mensaje = "No esta permitido Eliminar este Consumo de Agua";

                }
                sqlCon.Close();
            }

            catch (Exception ex)
            {
                log.Error("mantenerConsumoAgua(EXCEPTION): ", ex);
                throw ex;
                if (consumoAgua.accion == 0)
                {
                    mensaje = "No se pudo eliminar el Consumo de Agua correctamente";

                }
                if (consumoAgua.accion == 1)
                {
                    mensaje = "No se pudo insertar el Consumo de Agua correctamente";
                }
                if (consumoAgua.accion == 2)
                {
                    mensaje = "No se pudo modificar el Consumo de Agua correctamente";
                }
                sqlCon.Close();
                return mensaje;
            }
            finally
            {
                sqlCon.Close();
            }
            return mensaje;
        }
        public List<String> buscarPisos(string id_edificio)
        {
            List<String> listaPisos = new List<String>();
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            sqlCon.Open();
            try
            {
                
                string commandString = "SELECT distinct numero_piso FROM departamento where id_edificio = " + id_edificio;
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();
                while (dataReader.Read())
                {
                    String piso = Convert.ToString(dataReader["numero_piso"]);
                    listaPisos.Add(piso);
                }
                dataReader.Close();
                sqlCon.Close();
                return listaPisos;
            }
            catch (Exception ex)
            {
                log.Error("buscarPisos(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }
        public List<DepartamentoR> listarDepartamentosR(string id_edificio, string piso)
        {
            List<DepartamentoR> listaDepartamentos = new List<DepartamentoR>();
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            sqlCon.Open();
            try
            {
                
                string commandString = "SELECT * FROM departamento where ";
                commandString += " id_edificio = " + id_edificio;
                commandString += " AND numero_piso = '" + piso + "'";
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    DepartamentoR departamento = new DepartamentoR();
                    departamento.id_departamento = Convert.ToInt32(dataReader["id_departamento"]);
                    departamento.numero = Convert.ToInt32(dataReader["numero"]);

                    listaDepartamentos.Add(departamento);
                }

                dataReader.Close();
                sqlCon.Close();
                return listaDepartamentos;
            }
            catch (Exception ex)
            {
                log.Error("listarDepartamentos(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }
        public Conjunto cargarUltimaFechaRegistrada(string id_departamento)
        {
            Conjunto conjunto = new Conjunto();
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            sqlCon.Open();
            try
            {
                
                int x;
                string commandString = "select count(*) from Consumo_De_Agua where id_departamento ='" + id_departamento + "' ";
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                if (!Convert.IsDBNull(sqlCmd.ExecuteScalar()))
                {
                    x = (int)sqlCmd.ExecuteScalar();
                }
                else
                {

                    x = 0;
                }



                if (x != 0)
                {
                    commandString = "SELECT * FROM Consumo_De_Agua where id_departamento ='" + id_departamento + "' order by anio,mes desc";
                    sqlCmd = new SqlCommand(commandString, sqlCon);
                    SqlDataReader dataReader = sqlCmd.ExecuteReader();
                    dataReader.Read();
                    conjunto.anio = Convert.ToString(dataReader["anio"]);
                    conjunto.mes = Convert.ToString(dataReader["mes"]);
                    conjunto.monto = Convert.ToString(dataReader["registro_final"]);
                    conjunto.existe = true;
                    dataReader.Close();
                }
                else
                {
                    conjunto.existe = false;
                }
                sqlCon.Close();
                return conjunto;
            }
            catch (Exception ex)
            {
                log.Error("cargarUltimaFechaRegistrada(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }
        public List<string> listarPeriodos()
        {
            List<string> listaPeriodos = new List<string>();
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            sqlCon.Open();
            try
            {
                
                string commandString = "SELECT * FROM consumo_de_agua order by Fecha_inicio desc";
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();
                int x = 0;
                int mesSeteado = 0,mesSeteadoAux = 0;
                string mesAnio;
                while ((dataReader.Read()) && (x<12))
                {
                    string fecha;
                    fecha = Convert.ToString(dataReader["Fecha_inicio"]);
                    if (mesSeteado == 0)
                    {
                        mesAnio = fecha.Substring(6,4) + fecha.Substring(3, 2);
                        mesSeteado = Convert.ToInt32(mesAnio);
                        listaPeriodos.Add(fecha);
                        x++;
                    }
                    else
                    {
                        mesAnio = fecha.Substring(6,4) + fecha.Substring(3, 2);
                        mesSeteadoAux = Convert.ToInt32(mesAnio);
                        if ((mesSeteado-1)==mesSeteadoAux){
                            listaPeriodos.Add(fecha);
                            x++;
                        }
                    }
                }

                dataReader.Close();
                sqlCon.Close();
                return listaPeriodos;
            }
            catch (Exception ex)
            {
                log.Error("listarPeriodos(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }
        public List<ConsumoAguaBean> listarConsumoAgua(BusquedaConsumoAgua busquedaConsumoAgua)
        {
            List<ConsumoAguaBean> listaConsumoAgua = new List<ConsumoAguaBean>();
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            sqlCon.Open();
            try
            {

                string commandString = "SELECT a.Id_Consumo, a.registro_inicio, a.estado, a.id_departamento, a.registro_final, a.id_edificio, a.anio, a.mes, b.Nombre, c.numero FROM consumo_de_agua a, edificio b, departamento c Where a.id_edificio = b.id_edificio AND a.id_departamento = c.id_departamento AND a.estado = 1 AND b.Contometro = 1";
                commandString += " AND a.id_edificio like '%" + busquedaConsumoAgua.id_edificio + "%'";
                commandString += " AND a.id_departamento like '%" + busquedaConsumoAgua.id_departamento + "%'";
                bool banioI = true, bmesI = true, banioF = true, bmesF = true;         
                if (busquedaConsumoAgua.anioInicial == 0) banioI = false;
                if (busquedaConsumoAgua.mesInicial == 0) bmesI = false;
                if (busquedaConsumoAgua.anioFinal == 0) banioF = false;
                if (busquedaConsumoAgua.mesFinal == 0) bmesF = false;
                if (banioI && bmesI) cadenaFechaInicial = "" + busquedaConsumoAgua.anioInicial + busquedaConsumoAgua.mesInicial;
                if (!banioI && bmesI) cadenaFechaInicial = "000000";
                if (banioI && !bmesI) cadenaFechaInicial = "" + busquedaConsumoAgua.anioInicial + "00";
                if (!banioI && !bmesI) cadenaFechaInicial = "000000";
                if (banioF && bmesF) cadenaFechaFinal = "" + busquedaConsumoAgua.anioFinal + busquedaConsumoAgua.mesFinal;
                if (!banioF && bmesF) cadenaFechaFinal = "999999";
                if (banioF && !bmesF) cadenaFechaFinal = "" + busquedaConsumoAgua.anioFinal + "99";
                if (!banioF && !bmesF) cadenaFechaFinal = "999999";
                commandString += " order by anio,mes desc";
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();
                while (dataReader.Read())
                {
                    ConsumoAguaBean consumoAgua = new ConsumoAguaBean();
                    consumoAgua.Id_Consumo = Convert.ToInt32(dataReader["Id_Consumo"]);
                    consumoAgua.id_edificio = Convert.ToInt32(dataReader["id_edificio"]);
                    consumoAgua.id_departamento = Convert.ToInt32(dataReader["id_departamento"]);
                    consumoAgua.registro_inicio = Convert.ToInt32(dataReader["registro_inicio"]);
                    consumoAgua.registro_final = Convert.ToInt32(dataReader["registro_final"]);
                    consumoAgua.anio = Convert.ToInt32(dataReader["anio"]);
                    consumoAgua.mes = Convert.ToInt32(dataReader["mes"]);
                    consumoAgua.edificio = Convert.ToString(dataReader["Nombre"]);
                    consumoAgua.departamento = Convert.ToString(dataReader["numero"]);
                    string cadenaFecha = "" + consumoAgua.anio + consumoAgua.mes;
                    if ((Convert.ToInt32(cadenaFecha) >= Convert.ToInt32(cadenaFechaInicial)) && (Convert.ToInt32(cadenaFecha) <= Convert.ToInt32(cadenaFechaFinal)))
                    {
                        listaConsumoAgua.Add(consumoAgua);
                    }
                }

                dataReader.Close();
                sqlCon.Close();
                return listaConsumoAgua;
            }
            catch (Exception ex)
            {
                log.Error("listarConsumoAgua(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }
        public string verificarModificacion(ConsumoAguaBean consumoAgua)
        {
            string mensaje = "";
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            sqlCon.Open();
            try
            {
                string commandString = "SELECT a.Id_Consumo FROM Consumo_De_Agua a, Consumo_De_Agua b where a.Id_Consumo = b.Id_Consumo";
                commandString += " AND a.Fecha_final > b.Fecha_final AND a.costo is null";
                commandString += " AND a.id_departamento = " + consumoAgua.id_departamento;
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();
                if (dataReader.Read())
                {
                    int Id_Consumo = Convert.ToInt32(dataReader["Id_Consumo"]);
                    if (Id_Consumo == consumoAgua.Id_Consumo)
                    {
                        mensaje = "si";
                    }
                    else
                    {
                        mensaje = "No se puede modificar este consumo de agua";
                    }
                }
                else
                {
                    mensaje = "no hay registro de ultima fecha en la base de datos";
                }

                sqlCon.Close();
            }
            catch (Exception ex)
            {
                log.Error("verificarModificacion(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
            return mensaje;
        }
        public List<EdificioR> listarEdificiosR()
        {
            List<EdificioR> listaEdificios = new List<EdificioR>();
            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            sqlCon.Open();
            try
            {
                
                string commandString = "SELECT * FROM edificio where estado='1' and Contometro = 1";

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                while (dataReader.Read())
                {
                    EdificioR edificio = new EdificioR();
                    edificio.id_edificio = Convert.ToString(dataReader["id_edificio"]);
                    edificio.nombre = Convert.ToString(dataReader["nombre"]);

                    listaEdificios.Add(edificio);
                }

                dataReader.Close();
                sqlCon.Close();
                return listaEdificios;
            }
            catch (Exception ex)
            {
                log.Error("listarEdificioR(EXCEPTION): ", ex);
                throw ex;
            }
            finally
            {
                sqlCon.Close();
            }
        }
    }
}